package com.aliware.tianchi;

import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
import org.apache.dubbo.rpc.cluster.support.FailbackClusterInvoker;
import org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker;
import org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster;

/**
 *  Cluster接口的作用是串联起整个容错逻辑
 *  Cluster 和 ClusterInvoker 之间的关系：Cluster接口下面有多种不同的实现，每种实现中都需要实现接口的join方法，
 *  在方法中会"new"一个对应的ClusterInvoker实现。
 */
public class UserCluster extends AbstractCluster {
    @Override
    protected <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException {
        return new UserClusterInvoker<>(directory);
    }
}
